/**
 * @file 简化的ID生成服务
 * @description 提供简单的标签页ID生成功能，从1开始自增
 * @author 黄敏
 * @version 2.0.0
 * @since 2025-08-07
 */

import { ipcMain } from 'electron'
import { idGeneratorTopic } from '~shared/ipc-topic'

/**
 * 简化的ID生成器类
 * 只支持tab类型，从1开始自增
 */
class IdGenerator {
  private static instance: IdGenerator

  /** 标签页ID计数器，从1开始 */
  private tabCounter = 1

  private constructor() {
    this.setupIpcHandlers()
  }

  /**
   * 获取单例实例
   */
  public static getInstance(): IdGenerator {
    if (!IdGenerator.instance) {
      IdGenerator.instance = new IdGenerator()
    }
    return IdGenerator.instance
  }

  /**
   * 生成标签页ID
   * @param type 类型参数（目前只支持'tab'）
   * @returns 数字ID
   */
  public generateId(type: 'tab'): number {
    if (type !== 'tab') {
      throw new Error(`不支持的ID类型: ${type}，目前只支持 'tab' 类型`)
    }

    const id = this.tabCounter
    this.tabCounter++
    return id
  }

  /**
   * 设置IPC处理器
   */
  private setupIpcHandlers(): void {
    // 处理ID生成请求
    ipcMain.on(idGeneratorTopic.generate, (_, type: 'tab') => {
      _.returnValue = this.generateId(type)
    })

    console.log('✅ 简化ID生成服务IPC处理器已注册')
  }
}

// 导出单例实例
export const idGenerator = IdGenerator.getInstance()
